package internal

import (
	"encoding/json"
)

type Segment struct {
	Scene  string `json:"-"`
	Source string `json:"-"`
	Rtc    string `json:"rtc"`
	Audio  bool   `json:"audio"`
	Video  bool   `json:"video"`
	From   uint64 `json:"from"`
	To     uint64 `json:"to"`
}

func (s *Segment) String() string {
	str, _ := json.Marshal(s)
	return string(str)
}

type Source struct {
	Scene    string     `json:"-"`
	Name     string     `json:"name"`
	Segments []*Segment `json:"segments"`
}

func (s *Source) String() string {
	str, _ := json.Marshal(s)
	return string(str)
}

type Job struct {
	Scene      string        `json:"scene"`
	Date       string        `json:"date"`
	Time       string        `json:"time"`
	Type       string        `json:"type"`
	Priority   int           `json:"priority"`
	Ctx        string        `json:"ctx"`
	SubDir     string        `json:"sub_dir"`
	SourceList []*SourcesMgr `json:"sourceList"`
}

type Job_bak struct {
	Scene    string    `json:"scene"`
	Date     string    `json:"date"`
	Time     string    `json:"time"`
	Type     string    `json:"type"`
	Priority int       `json:"priority"`
	Ctx      string    `json:"ctx"`
	Sources  []*Source `json:"sources"`
	SubDir   string    `json:"sub_dir"`
}

func (j *Job) String() string {
	str, _ := json.Marshal(j)
	return string(str)
}

type Result struct {
	Job   string `json:"job"`
	Error string `json:"error"`
}

func (r *Result) String() string {
	str, _ := json.Marshal(r)
	return string(str)
}

type SourcesMgr struct {
	Sources []*Source_2 `json:"sources"`
}

type Source_2 struct {
	Scene   string  `json:"-"`
	Name    string  `json:"name"`
	Segment Segment `json:"segments"`
}
